A Plotly egy Open Source grafikai csomag, ami nem csak Python-ban érhető el, de R-ben, sőtt MATLAB-ban is. A segítségével interaktív plotokat készíthetünk, amiket aztán HTML-be kimentve megtarthatjuk azok interaktivitását.
Telepítése a szokásos módon történhet:
pip install plotly
Ezt követően két eltérő módon importálhatjuk és állhatunk neki a plottolásnak:
import plotly.express as pximport plotly.graph_objects as goA Plotly express egy gyorsabb utat jelent a plotok elkészítéséhez, viszont nem minden beállítást érhetünk el rajta keresztül, illetve kevésbé általános. A graph_objects használatánál több beállításra is szükség lehet, de itt szinte minden megoldható, hiszen egy üres 'rajzlapról' indulunk, és mi töltjük fel.
A Plotly express nagyon jól használható Pandas DataFrame-el kombinálva, ahol az adatok már megfelelően elő vannak készítve. Ez a Plotly dokumentáció alaján az ajánlott mód a plotok elkészítéséhez.
A dokumentációja nagyon jó, rengeteg példát mutat, így könnyű megtalálni amit keresünk. https://plotly.com/python/
import plotly.express as px
import plotly.graph_objects as go
import pandas as pd
import seaborn as sns
df = px.data.iris() # iris is a pandas DataFrame
df.head()
| sepal_length | sepal_width | petal_length | petal_width | species | species_id | |
|---|---|---|---|---|---|---|
| 0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa | 1 |
| 1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa | 1 |
| 2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa | 1 |
| 3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa | 1 |
| 4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa | 1 |
Az iris dataset importálása a px-en keresztül is megtörténhet, ezt fogjuk most példaként használni.
fig = px.scatter(df, x="sepal_width", y="sepal_length")
fig.show()
'''Méret petal_length alapján, méret faj alapján'''
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",
size='petal_length', hover_data=['petal_width'],
title='Plotly scatter plot')
fig.show()
https://plotly.com/python/subplots/
A graph_objects segítségével teljesen magunk rakhatjuk össze a plotokat.
Itt a fig.add_trace() függvényre hívnám fel a figyelmet, amivel bármilyen, már elkészült Figure objektumhoz adhatunk új adatsort. (Plotly Express-el készült plotot is kiegészíthetünk így.)
from plotly.subplots import make_subplots
fig = make_subplots(rows=1, cols=2)
fig.add_trace(go.Scatter(y=[4, 2, 1], mode="lines"), row=1, col=1)
fig.add_trace(go.Bar(y=[2, 1, 3]), row=1, col=2)
fig.show()
A Plotly express esetén facet_col illetve facet_row beállításokkal készíthetünk subplotokat a dataframe egy oszlopának értékei alapján
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species", facet_col="species",
title="Subplots Witin A Plotly Express Figure")
fig.show()
'''Defaults in px'''
px.defaults.template = "ggplot2"
px.defaults.color_continuous_scale = px.colors.sequential.Blackbody
px.defaults.width = 600
px.defaults.height = 400
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="sepal_length")
fig.show()
df = px.data.tips()
fig = px.histogram(df, x="total_bill", y="tip", color="sex",
marginal="box", # or violin, rug
hover_data=df.columns)
fig.show()
df = px.data.iris()
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
color='species')
fig.show()